≫ NLP и токенизация
Manticore не хранит текст точно в том виде, в каком он есть, для полнотекстового поиска. Вместо этого он разбивает текст на слова (называемые токенами) и строит несколько внутренних структур для обеспечения быстрого полнотекстового поиска. Эти структуры включают словарь, который помогает быстро проверить, существует ли слово в индексе. Другие структуры отслеживают, в каких документах и полях содержится слово, и даже где именно в поле оно появляется. Все это используется во время поиска для нахождения релевантных результатов.
Процесс разбиения и обработки текста таким образом называется токенизацией. Токенизация происходит как при добавлении данных в индекс, так и при выполнении поиска. Она работает как на уровне символов, так и на уровне слов.
На уровне символов разрешены только определённые символы. Это контролируется с помощью charset_table. Все остальные символы заменяются пробелом (который рассматривается как разделитель слов). charset_table также поддерживает такие функции, как преобразование символов в нижний регистр или замена одного символа другим. Она также может определять символы, которые нужно игнорировать, объединять или рассматривать как границу фразы.
На уровне слов движок использует настройку min_word_len, чтобы определить минимальную длину слова (в символах), которое должно индексироваться.
Manticore также поддерживает сопоставление слов с разными формами. Например, чтобы рассматривать "car" и "cars" как одно и то же слово, можно использовать морфологические процессоры.
Если вы хотите, чтобы разные слова рассматривались как одно — например, "USA" и "United States" — вы можете определить их с помощью функции форм слов.
Очень распространённые слова (например, "the", "and", "is") могут замедлять поиск и увеличивать размер индекса. Вы можете отфильтровать их с помощью стоп-слов. Это может сделать поиск быстрее и уменьшить размер индекса.
Более продвинутый метод фильтрации — это биграммы, которые создают специальные токены, объединяя распространённое слово с редким. Это может значительно ускорить поиск фраз, когда в них участвуют распространённые слова.
Если вы индексируете HTML, обычно лучше не включать HTML-теги в индекс, так как они добавляют много ненужного содержимого. Вы можете использовать удаление HTML-тегов, чтобы убрать теги, но при этом индексировать определённые атрибуты тегов или полностью пропускать определённые элементы.
Имейте в виду, что в Manticore существует максимальная длина токена — 42 символа. Любое слово длиннее этого будет усечено. Это ограничение действует как при индексировании, так и при поиске, поэтому важно учитывать его при подготовке данных и запросов.